Selene Shepard поделилась ссылкой
30 июля 2013 года, 12:49
#11234: Обойдёмся без железок
Почитав про оживление биосов, вспомнил и свои мытарства в те годы. Писали мы ПО под PC-совместимые контроллеры Fastwel RTU188, в которых биос вместе со всей операционной системой жили на флешке. Загрузчик прошивок не терпел отключения питания в процессе перепрошивки, система оставалась без загрузчика. Долго ли, коротко — набралось штук шесть убитых ПЛК. А программатора флешки нет, хотя она на ПЛК в «кроватке». И тут в голову вступило — раз загрузчик перепрошивает биос, значит, и мы сможем.

1. Пишется хитрая программа. После старта копирует в динамическую память содержимое сектора флешки с биосом и встаёт в цикл ожидания замыкания на определённом дискретном входе, сообщая ритмичным миганием светодиода о своей работоспособности. После замыкания входа прописывает сектор обратно.

2. Берём исправный контроллер. Запускаем эту программу. Биос ещё до её запуска копирует сам себя в обычную память и исполняется уже оттуда, так что манипуляции с флешкой не влияют на работоспособность ПЛК. В цикле ожидания замыкания аккуратно вынимаем флешку из кроватки, контролируя работу ПЛК по светодиоду: перестал мигать — значит, не судьба, начинаем снова.

3. Берём флешку с убитого ПЛК, на палец сажаем кусочек двустороннего скотча, на него флешку — и не дыша вставляем флешку в кроватку, стараясь добиться одновременного касания контактов. Если продолжает мигать, значит, удалось. Тогда замыканием дискретного входа разрешаем прошивку сектора биоса в повреждённую флешку.

Таким образом удалось восстановить все ПЛК с повреждённым сектором биоса. Казалось бы, проще программатор найти? Но это подход электронщика, а мы все были программерами и отмочили этот эксперимент для собственного удовольствия — можем и так, без постороннего железа.